package com.xhui.vimarket.zkplus.service;

import java.util.List;
import java.util.Map;

import org.zkoss.zk.ui.Component;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Paging;

import com.xhui.vimarket.common.utils.vo.PageInfo;
import com.xhui.vimarket.zkplus.zul.dataview.DataViewerExt;
import com.xhui.vimarket.zkplus.zul.dataview.bean.DataSqlObj;
import com.xhui.vimarket.zkplus.zul.dataview.bean.DataViewer;

/**
 * DataViewer接口
 * .
 * 
 * @author zfz
 * @version Revision 1.0.0
 */
public interface DataViewerManager {
    
    public DataViewer getDataViewer(String tag);
    
    /**
     * 绑定DataViewer
     * .
     * 
     * @param dataViewer
     * @param listbox
     * @param listitem
     */
    public void bindDataViewr(final DataViewerExt comp, DataViewer dataViewer, Listbox listbox,
        Paging paging, DataSqlObj sqlObj, List<String> hiddenColList, List<String> showColList);
    
    /**
     * 绑定DataViewer
     * .
     * 
     * @param dataViewer
     * @param listbox
     * @param listitem
     */
    public void bindDataViewrWithOutAll(final DataViewerExt comp, DataViewer dataViewer, Listbox listbox,
        Paging paging, DataSqlObj sqlObj, List<String> hiddenColList, List<String> showColList);
    /**
     * 绑定DataViewer.
     * @param comp
     * @param dataViewer
     * @param grid
     * @param paging
     * @param sqlObj
     * @param hiddenColList
     * @param showColList
     */
    void bindDataViewr(final Component comp, DataViewer dataViewer, Grid grid, Paging paging,
        DataSqlObj sqlObj, List<String> hiddenColList, List<String> showColList, Map<String, Object> map);
    /**
     * hql获取列表.
     * @param dvparmas hql的参数
     * @param tag comDataViewer的type值
     * @param flag hql/sql查询标识  true--hql false--sql
     * @return 结果列表
     * @author g.luxb
     * @创建日期 2011-7-24
     */
    List findList(Map<String, Object> dvparmas, String tag, boolean flag);
    /**
     * hql获取列表.
     * @param dvparmas hql的参数
     * @param tag comDataViewer的type值
     * @return 结果列表
     * @author g.luxb
     * @创建日期 2011-7-24
     */
    List findListByHQLAndParams(Map<String, Object> dvparmas, String tag);
    /**
     * sql获取列表.
     * @param dvparmas hql的参数
     * @param tag comDataViewer的type值
     * @return 结果列表
     * @author g.luxb
     * @创建日期 2011-7-24
     */
    List findListByJDBCSQLAndParams(Map<String, Object> dvparmas, String tag);
    /**
     * hql获取分页列表.
     * @param dvparmas hql的参数
     * @param tag comDataViewer的type值
     * @param flag hql/sql查询标识  true--hql false--sql
     * @param currentPage 当前页
     * @param perPageNum 页面展现记录数
     * @return 结果列表
     * @author g.luxb
     * @创建日期 2011-7-24
     */
    PageInfo findPageInfo(Map<String, Object> dvparmas, String tag, int currentPage, int perPageNum, boolean flag);
    /**
     * hql获取分页列表.
     * @param dvparmas hql的参数
     * @param tag comDataViewer的type值
     * @param currentPage 当前页
     * @param perPageNum 页面展现记录数
     * @return 结果列表
     * @author g.luxb
     * @创建日期 2011-7-24
     */
    PageInfo findPageInfoByHQLAndParams(Map<String, Object> dvparmas, String tag, int currentPage, int perPageNum);
    /**
     * jdbc获取分页列表.
     * @param dvparmas jdbc的参数
     * @param tag comDataViewer的type值
     * @param currentPage 当前页
     * @param perPageNum 页面展现记录数
     * @return 结果列表
     * @author g.luxb
     * @创建日期 2011-7-24
     */
    PageInfo findPageInfoByJDBCSQLAndParams(Map<String, Object> dvparmas, String tag, int currentPage, int perPageNum);
}
